package interfaces;

import java.io.File;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.HashSet;
import java.util.List;

import dominio.bean.CodigoPostal;
import dominio.bean.DetalleLiquidacion;
import dominio.bean.EmpresaTransporte;
import dominio.bean.Liquidacion;
import dominio.bean.Peso;
import dominio.bean.SubClase;
import dominio.bean.Tarifa;
import dominio.bean.FormularioCompraProductos;

public interface InterfazRemota extends Remote{
	
//	TARIFAS
	public HashSet<Tarifa> getTarifas() throws RemoteException;
	public void setTarifa (HashSet<Tarifa> tarifa)throws RemoteException;
	public void addTarifa (Tarifa tarifa)throws RemoteException;
	public boolean removerTarifa(Tarifa tarifa)throws RemoteException;
	public void persistirTarifa()throws RemoteException;
	public Tarifa recuperarTarifa(Integer idEmpresaTransporte, String codigoPostal, Integer sector)throws RemoteException;

	
//	SUBCLASE
	

	public HashSet<SubClase> getSubClases()throws RemoteException;
	public void setSubClase (HashSet<SubClase> subClase)throws RemoteException;
	public void addSubClase (SubClase subClase)throws RemoteException;
	public boolean removerSubClase(SubClase subClase)throws RemoteException;
	public void persistirSubClase()throws RemoteException;
	public void recuperarSubClase()throws RemoteException;
	
//	PESOS
	public HashSet<Peso> getPesos()throws RemoteException;
	public void setPeso (HashSet<Peso> peso)throws RemoteException;
	public void addPeso (Peso peso)throws RemoteException;
	public boolean removerPeso(Peso peso)throws RemoteException;
	public void persistirPeso()throws RemoteException;
	public void recuperarPeso()throws RemoteException;
	
//	EMP TRANSP
	
	public HashSet<EmpresaTransporte> getEmpresasDeTransportes()throws RemoteException;
	public void setEmpresaDeTransporte (HashSet<EmpresaTransporte> emp)throws RemoteException;
	public void addEmpresaDeTransporte (EmpresaTransporte emp)throws RemoteException;
	public boolean removerEmpresaDeTransporte(EmpresaTransporte emp)throws RemoteException;
	public void persistirEmpresaDeTransporte()throws RemoteException;
	public void recuperarEmpresaDeTransporte()throws RemoteException;
	
//	CODIGOS POSTALES
	
	public HashSet<CodigoPostal> getCodigosPostales()throws RemoteException;
	public void setCodigoPostal (HashSet<CodigoPostal> codigoPostal)throws RemoteException;
	public void addCodigoPostal (CodigoPostal codigoPostal)throws RemoteException;
	public boolean removerCodigoPostal(CodigoPostal codigoPostal)throws RemoteException;
	public void persistirCodigoPostal()throws RemoteException;
	public CodigoPostal recuperarCodigoPostal(String idCodigoPostal, Integer sector)throws RemoteException;
	
//  LIQUIDACION
	
	public HashSet<FormularioCompraProductos> procesarPlanillaBase(File planillaBase)throws RemoteException;
	public Integer grabarLiquidacion(Liquidacion liquidacion)throws RemoteException;
	public void grabarDetallesLiquidacion(List<DetalleLiquidacion> detallesLiquidacion)throws RemoteException;
	public void actualizarLiquidacion(Liquidacion liquidacion)throws RemoteException;
	
	public Liquidacion obtenerLiquidacion(Integer idLiquidacion)throws RemoteException;
	public HashSet<DetalleLiquidacion> obtenerDetallesLiquidacion(Integer idLiquidacion)throws RemoteException;
	
//	Grabar
	
//	public void grabarTarifas(Set<Tarifa> tarifas) throws RemoteException;
//	public void grabarSubClases(Set<SubClase> subClases) throws RemoteException;
//	public void grabarPesos(Set<Peso> pesos) throws RemoteException;
//	public void grabarEmpresasDeTransporte(Set<EmpresaDeTransporte> emps) throws RemoteException;
//	public void grabarCodigoPostal(Set<CodigoPostal> codigosPostales) throws RemoteException;

}
